// OS  操作系统相关
const os = require('node:os')
// 1.platform 获取操作系统平台
console.log(os.platform());  // 当前 win32(windows)  darwin(mac)  linux
// 2.release 获取操作系统版本   10.0.xxx
console.log(os.release());
// 3.type 操作系统类型
console.log(os.type());  // Windows_NT(windows上)   Linux(linux上)   Darwin(macos上)
// 4.version 直接获取版本
console.log(os.version());  // Windows 10 Pro  （win10专业版）

/*
// 用途 webpack  vite  rollup 等包管理工具中的 open: true 属性(是否默认打开浏览器)的底层实现
const { exec } = require('child_process');  // exec是执行 shell命令的
function openBrowser(url) {
  if (os.platform() === 'darwin') {  // macOS
    exec(`open ${url}`); //执行shell脚本
  } else if (os.platform() === 'win32') {  // Windows
    exec(`start ${url}`); //执行shell脚本
  } else {  // Linux, Unix-like
    exec(`xdg-open ${url}`); //执行shell脚本
  }
}
openBrowser('www.baidu.com')
*/

// 5.homedir 读取用户的目录， 底层原理 --> %userprofile%    (mac平台 底层是用 $HOME获取)
console.log(os.homedir());
// 6.cpu架构  在安卓端使用较多, 有 arm、arm64、ia32、ppc ... 等等
console.log(os.arch());          // x64
// 7.操作系统线程cpu信息
console.log(os.cpus().length); // 24 获取电脑cpu的线程数
console.log(os.cpus());  // 是一个数组，如下
/*
// 线程信息,可以用于计算cpu利用率
[
  {
    model: '13th Gen Intel(R) Core(TM) i7-13700',   
    speed: 2112,                                    
    times: { user: 641000, nice: 0, sys: 219546, idle: 114185562, irq: 3812 }
  },
  {
    model: '13th Gen Intel(R) Core(TM) i7-13700',  // 表示CPU的型号信息
    speed: 2112,                                  // 表示CPU的时钟速度，以MHz或GHz为单位
    times: {                                     // 是一个包含CPU使用时间的对象 (单位毫秒)
      user: 3979062,                            // 表示CPU被用户程序使用的时间
      nice: 0,                                 // 表示CPU被优先级较低的用户程序使用的时间
      sys: 1831781,                           // 表示CPU被系统内核使用的时间
      idle: 109235078,                       // 表示CPU处于空闲状态的时间
      irq: 71609                            // 表示CPU被硬件中断处理程序使用的时间
    }
  },
  {
    model: '13th Gen Intel(R) Core(TM) i7-13700',
    speed: 2112,
    times: { user: 162843, nice: 0, sys: 56515, idle: 114826578, irq: 312 }
  },
  {
    model: '13th Gen Intel(R) Core(TM) i7-13700',
    speed: 2112,
    times: {
      user: 1763781,
      nice: 0,
      sys: 856937,
      idle: 112425218,
      irq: 10890
    }
  },
  .
  .
  .
]
*/
// 8.网络信息 networkInterfaces          要保密一点
console.log(os.networkInterfaces());
/*
{
  '以太网': [
    {
      address: 'f800::456:23f2:a511:5505',    // IPv6是 16进制表示的
      netmask: 'ffff:ffff:ffff:ffff::',         
      family: 'IPv6',
      mac: '55:f5:55:45:a5:55',                  // IPv6是 16进制表示的
      internal: false,
      cidr: 'f800::456:23f2:a511:5505/64',
      scopeid: 6
    },
    {
      address: '192.168.1.100',            
      netmask: '255.255.255.0',            
      family: 'IPv4',                      
      mac: '55:f5:55:45:a5:55',            
      internal: false,                     
      cidr: '192.168.1.100/24'              
    }
  ],
  'VMware Network Adapter VMnet1': [       // 这个是本机上如果加了虚拟机的网络信息
    {
        ...
    },
    {
        ...
    }
  ],
  'Loopback Pseudo-Interface 1': [           // 软接口，一个类似于物理接口的逻辑接口，是应用最为广泛的一种虚接口，几乎在每台路由器上都会使用
    {
      address: '::1',
      netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
      family: 'IPv6',
      mac: '00:00:00:00:00:00',
      internal: true,
      cidr: '::1/128',
      scopeid: 0
    },
    {
      address: '127.0.0.1',                     // 表示本地回环接口的IP地址
      netmask: '255.0.0.0',                    // 表示本地回环接口的子网掩码
      family: 'IPv4',                          // 表示地址族（address family）,IPv4或IPv6
      mac: '00:00:00:00:00:00',                // 表示本地回环接口的MAC地址请注意，本地回环接口通常不涉及硬件，因此MAC地址通常为全零
      internal: true,                         // 表示本地回环接口是否是内部接口
      cidr: '127.0.0.1/8'                     // 表示本地回环接口的CIDR表示法，即网络地址和子网掩码的组合
    }
  ]
}
*/
